Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Media elements improvements #8203

Merged
merged 16 commits into from
Mar 13, 2024
Merged

Media elements improvements #8203

merged 16 commits into from
Mar 13, 2024

Conversation

kajarenc
Copy link
Collaborator

@kajarenc kajarenc commented Feb 26, 2024

Describe your changes

Add end_time and loop parameters to st.audio and st.video
Specs:
End time https://www.notion.so/snowflake-corp/Spec-cf910f5811a84a6a9976d230c85a044e
Loop: https://www.notion.so/snowflake-corp/Spec-18bbbb288f4c4a0ba129d95eeb9c0260

GitHub Issue Link (if applicable)

Testing Plan

  • Explanation of why no additional tests are needed
  • Unit Tests (JS and/or Python) Done ✅
  • E2E Tests Done ✅
  • Any manual testing needed?

Contribution License Agreement

By submitting this pull request you agree that all contributions to this project are made under the Apache 2.0 license.

@kajarenc kajarenc changed the title [WIP] Add loop parameter to st.audio [WIP] Media elements improvements Feb 26, 2024
@snehankekre
Copy link
Collaborator

@kajarenc The end time and looping behavior work as expected, according to the specs 😄 LGTM :shipit:

@kajarenc kajarenc changed the title [WIP] Media elements improvements Media elements improvements Mar 11, 2024
@kajarenc kajarenc marked this pull request as ready for review March 11, 2024 17:48
Copy link
Collaborator

@LukasMasuch LukasMasuch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 👍 What happens if the configured end time or start time is larger than the video time?

audio_element.evaluate("el => el.play()")
app.wait_for_timeout(5000)
expect(audio_element).to_have_js_property("paused", True)
assert int(audio_element.evaluate("el => el.currentTime")) == 13
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: To prevent flakiness we probably need to use wait_until method from conftest. See this as an example:

wait_until(app, check_dimensions)

Also see https://github.com/streamlit/streamlit/wiki/Running-e2e-tests-and-updating-snapshots#three-rules-of-playwright :)

# approximately 17 (4 seconds until end_time and 2 seconds starting from start time)
app.wait_for_timeout(6000)
expect(audio_element).to_have_js_property("paused", False)
assert 16 < audio_element.evaluate("el => el.currentTime") < 18
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above :)

@pytest.mark.parametrize(
"nth_element",
[
pytest.param(5, marks=pytest.mark.skip_browser("webkit")),
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

interesting :) didn't know this trick 👍

# Wait until video will reach end_time
app.wait_for_timeout(3000)
expect(video_element).to_have_js_property("paused", True)
assert int(video_element.evaluate("el => el.currentTime")) == 33
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace with wait_until (see comments above)

# 4 seconds until end_time and 2 seconds starting from start time
app.wait_for_timeout(6000)
expect(video_element).to_have_js_property("paused", False)
assert 36 < video_element.evaluate("el => el.currentTime") < 38
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace with wait_until (see comments above)

if (loop) {
youtubeUrl.searchParams.append("loop", "1")
// When using the loop parameter, YouTube requires the playlist parameter to be set to the same video ID
const videoId = youtubeUrl.pathname.split("/").pop()
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does that work for all the different types of youtube URLs?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It should work with different youtube URLs, because we standardize URL on the backend

return f"https://www.youtube.com/embed/{code}"

@@ -79,6 +81,10 @@ def audio(
sample_rate: int or None
The sample rate of the audio data in samples per second. Only required if
``data`` is a numpy array.
end_time: int
The time at which this element should stop playing.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: Maybe add that its the number of seconds

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: in some other time-related parameters (e.g. ttl), we also support timedelta and str (parsed by Pandas) in addition to the number of seconds. Maybe also something to consider here:

image

This could work here as well, but maybe not the best fit

cc @snehankekre

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The smallest reasonable measure to configure a video/audio start/end time is probably seconds or? So no need to use float here?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The smallest reasonable measure to configure a video/audio start/end time is probably seconds or? So no need to use float here?

@LukasMasuch The currentTime property of the HTMLMediaElement interface from which HTMLVideoElement inherits is specified in seconds according to the docs: https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/currentTime

And it can be set or returned as "a double-precision floating-point value indicating the current playback time in seconds", so we can support float here. Should we do it in this PR or another one scoped specifically to this change?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we also support timedelta and str (parsed by Pandas) in addition to the number of seconds. Maybe also something to consider here

@LukasMasuch really good point! This is a suggestion Thiago also had when we presented these specs in office hours.

Supporting timedelta objects from datetime and a string specifying the time in a format supported by Pandas's Timedelta constructor, in addition to seconds, would be nice for consistency across the API and will reduce the learning curve for new users.

+1 to supporting them.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would let devs do things like:

import streamlit as st
from datetime import timedelta

start_time_td = timedelta(seconds=15)
end_time_td = timedelta(minutes=2, seconds=30)

st.video(data="video.mp4", start_time=start_time_td, end_time=end_time_td)
# Assuming in our internal implementation we call .total_seconds() on the timedelta objects
import streamlit as st

start_time_str = "15s" 
end_time_str = "2m 30s"

# These values are parsed using Pandas's Timedelta constructor
st.video(data="video.mp4", start_time=start_time_str, end_time=end_time_str)

@kajarenc
Copy link
Collaborator Author

LGTM 👍 What happens if the configured end time or start time is larger than the video time?

We raise an exception if end_time < start_time, but for end time or start time is larger than video length handled by the browser (and behavior is very expected).

If start_time > video.length then the player on the last frame, but when you click play it starts from the beginning of the video.

If end_time > video.length the player stops on the last frame of the video (if loop == True, we continue from start_time).

@kajarenc kajarenc merged commit 8162158 into develop Mar 13, 2024
35 of 36 checks passed
This was linked to issues Mar 14, 2024
zyxue pushed a commit to zyxue/streamlit that referenced this pull request Apr 16, 2024
Add end_time and loop parameters to st.audio and st.video
sawyerh pushed a commit to sawyerh/highlights that referenced this pull request Jun 1, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [streamlit](https://streamlit.io)
([source](https://togithub.com/streamlit/streamlit),
[changelog](https://docs.streamlit.io/library/changelog)) | `1.25.0` ->
`1.35.0` |
[![age](https://developer.mend.io/api/mc/badges/age/pypi/streamlit/1.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/pypi/streamlit/1.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/pypi/streamlit/1.25.0/1.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/streamlit/1.25.0/1.35.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>streamlit/streamlit (streamlit)</summary>

###
[`v1.35.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.35.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.34.0...1.35.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.35.0 -->

#### What's Changed

##### New Features 🎉

- Add support for selections to `st.plotly_chart` by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/8191](https://togithub.com/streamlit/streamlit/pull/8191)
- feat: support set mysql connection query from secrets.toml by
[@&#8203;LucianLiu6](https://togithub.com/LucianLiu6) in
[https://github.com/streamlit/streamlit/pull/8581](https://togithub.com/streamlit/streamlit/pull/8581)
- Feature: `st.logo` by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/8554](https://togithub.com/streamlit/streamlit/pull/8554)
- Material icon for st.page_link by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/8593](https://togithub.com/streamlit/streamlit/pull/8593)
- Add dataframe row and column selections by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8411](https://togithub.com/streamlit/streamlit/pull/8411)
- Add support for selections to `st.altair_chart` & `st.vega_lite_chart`
by [@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/8302](https://togithub.com/streamlit/streamlit/pull/8302)

##### Bug Fixes 🐛

- Fix standalone custom-component execution by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8620](https://togithub.com/streamlit/streamlit/pull/8620)
- Clear stale elements when st.rerun() is used by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8599](https://togithub.com/streamlit/streamlit/pull/8599)
- Focus chat input after the submit button is pressed by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8637](https://togithub.com/streamlit/streamlit/pull/8637)
- fix:
[#&#8203;8500](https://togithub.com/streamlit/streamlit/issues/8500)
bypass StrEnum 'index' to make position-indexable by
[@&#8203;97k](https://togithub.com/97k) in
[https://github.com/streamlit/streamlit/pull/8622](https://togithub.com/streamlit/streamlit/pull/8622)
- Update scroll-margin-top by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8641](https://togithub.com/streamlit/streamlit/pull/8641)
- Fix cell error when data editor gets reconstructed by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8640](https://togithub.com/streamlit/streamlit/pull/8640)
- Ensure that column config is cloned by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8677](https://togithub.com/streamlit/streamlit/pull/8677)
- Add fallback method for CSV download by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8452](https://togithub.com/streamlit/streamlit/pull/8452)

##### Other Changes

- Bump mheap/github-action-required-labels from 5.4.0 to 5.4.1 by
[@&#8203;dependabot](https://togithub.com/dependabot) in
[https://github.com/streamlit/streamlit/pull/8582](https://togithub.com/streamlit/streamlit/pull/8582)
- Remove fullscreen button for `st.table` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8621](https://togithub.com/streamlit/streamlit/pull/8621)
- Improve typing for query params `.update` and `.from_dict` by
[@&#8203;Asaurus1](https://togithub.com/Asaurus1) in
[https://github.com/streamlit/streamlit/pull/8614](https://togithub.com/streamlit/streamlit/pull/8614)
- Improve anchor button visualization for titles and headings by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8587](https://togithub.com/streamlit/streamlit/pull/8587)
- Allow protobuf v5 by [@&#8203;mark-thm](https://togithub.com/mark-thm)
in
[https://github.com/streamlit/streamlit/pull/8624](https://togithub.com/streamlit/streamlit/pull/8624)
- Stabilize the vega-lite spec for altair-based charts by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8628](https://togithub.com/streamlit/streamlit/pull/8628)
- Update address output in headless mode by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8647](https://togithub.com/streamlit/streamlit/pull/8647)
- Revert "Allow protobuf v5" by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8701](https://togithub.com/streamlit/streamlit/pull/8701)

#### New Contributors

- [@&#8203;LucianLiu6](https://togithub.com/LucianLiu6) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8581](https://togithub.com/streamlit/streamlit/pull/8581)
- [@&#8203;mark-thm](https://togithub.com/mark-thm) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8624](https://togithub.com/streamlit/streamlit/pull/8624)
- [@&#8203;97k](https://togithub.com/97k) made their first contribution
in
[https://github.com/streamlit/streamlit/pull/8622](https://togithub.com/streamlit/streamlit/pull/8622)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.34.0...1.35.0

###
[`v1.34.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.34.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.33.0...1.34.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.34.0 -->

#### What's Changed

##### New Features 🎉

- Add st.experimental_dialog by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8040](https://togithub.com/streamlit/streamlit/pull/8040)
- from_dict for query params by
[@&#8203;Asaurus1](https://togithub.com/Asaurus1) in
[https://github.com/streamlit/streamlit/pull/8470](https://togithub.com/streamlit/streamlit/pull/8470)
- Improve period type support in `st.dataframe` and `st.data_editor` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7987](https://togithub.com/streamlit/streamlit/pull/7987)
- Add ability to clear cache for specific function arguments by passing
args to `<cached_func>.clear()` by
[@&#8203;OscarSaharoy](https://togithub.com/OscarSaharoy) in
[https://github.com/streamlit/streamlit/pull/8297](https://togithub.com/streamlit/streamlit/pull/8297)
- Add support for autoplaying `st.audio` and `st.video` media by
[@&#8203;snehankekre](https://togithub.com/snehankekre) in
[https://github.com/streamlit/streamlit/pull/8481](https://togithub.com/streamlit/streamlit/pull/8481)
- Support background colors for text by
[@&#8203;snehankekre](https://togithub.com/snehankekre) in
[https://github.com/streamlit/streamlit/pull/8435](https://togithub.com/streamlit/streamlit/pull/8435)
- Non-emoji icons by [@&#8203;kajarenc](https://togithub.com/kajarenc)
in
[https://github.com/streamlit/streamlit/pull/8307](https://togithub.com/streamlit/streamlit/pull/8307)
- Add support for Modin and Snowpark Pandas by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8506](https://togithub.com/streamlit/streamlit/pull/8506)
- Enable the usage of the pydeck-carto package with st.pydeck_chart by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8422](https://togithub.com/streamlit/streamlit/pull/8422)

##### Bug Fixes 🐛

- Offset dates in vega if no timezone information is attached. by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8278](https://togithub.com/streamlit/streamlit/pull/8278)
- Fix issues with fragments writing to containers and the sidebar by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8408](https://togithub.com/streamlit/streamlit/pull/8408)
- Produce python error for slider min=max by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8413](https://togithub.com/streamlit/streamlit/pull/8413)
- Make check for component ready dynamic by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8434](https://togithub.com/streamlit/streamlit/pull/8434)
- Update Auto Theme after print dialog if necessary by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8469](https://togithub.com/streamlit/streamlit/pull/8469)
- Reset widget state on page change by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8425](https://togithub.com/streamlit/streamlit/pull/8425)
- Switch back to using undeprecated pillow constant by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8492](https://togithub.com/streamlit/streamlit/pull/8492)
- Fix double script/callback run when replacing a file by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8493](https://togithub.com/streamlit/streamlit/pull/8493)
- Handle Altair vconcat with use_container_width by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8498](https://togithub.com/streamlit/streamlit/pull/8498)
- Fix empty state for `st.status` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8369](https://togithub.com/streamlit/streamlit/pull/8369)
- Fix `st.multiselect` usage with empty sets or tuples by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8471](https://togithub.com/streamlit/streamlit/pull/8471)
- Handle Altair resolve_scale by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8497](https://togithub.com/streamlit/streamlit/pull/8497)
- Adjust default date for st.date_input if today's date is out of bounds
by [@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8519](https://togithub.com/streamlit/streamlit/pull/8519)
- Handle setting session state keys to None for supported widgets by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8529](https://togithub.com/streamlit/streamlit/pull/8529)
- Fix empty generator usage with `st.write_stream` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8560](https://togithub.com/streamlit/streamlit/pull/8560)

##### Other Changes

- Update modal styles by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8274](https://togithub.com/streamlit/streamlit/pull/8274)
- Move toasts to top right and make them prettier by
[@&#8203;sfc-gh-tteixeira](https://togithub.com/sfc-gh-tteixeira) in
[https://github.com/streamlit/streamlit/pull/8433](https://togithub.com/streamlit/streamlit/pull/8433)
- Fix escaping in docstrings by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8510](https://togithub.com/streamlit/streamlit/pull/8510)
- Fix blank space print by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8502](https://togithub.com/streamlit/streamlit/pull/8502)
- Remove snowflake extras python restriction by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8538](https://togithub.com/streamlit/streamlit/pull/8538)

#### New Contributors

- [@&#8203;Lundez](https://togithub.com/Lundez) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8520](https://togithub.com/streamlit/streamlit/pull/8520)
- [@&#8203;OscarSaharoy](https://togithub.com/OscarSaharoy) made their
first contribution in
[https://github.com/streamlit/streamlit/pull/8297](https://togithub.com/streamlit/streamlit/pull/8297)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.33.0...1.34.0

###
[`v1.33.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.33.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.32.2...1.33.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.33.0 -->

#### What's Changed

##### Breaking Changes 🛠

- Require explicit suggestion of unsafe_allow_html in st.write by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8238](https://togithub.com/streamlit/streamlit/pull/8238)

##### New Features 🎉

- explicit update() method for query_params by
[@&#8203;Asaurus1](https://togithub.com/Asaurus1) in
[https://github.com/streamlit/streamlit/pull/8205](https://togithub.com/streamlit/streamlit/pull/8205)
- Add `AreaChartColumn` to column config by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8237](https://togithub.com/streamlit/streamlit/pull/8237)
- Associate label with input to make label click focus input by
[@&#8203;filiptammergard](https://togithub.com/filiptammergard) in
[https://github.com/streamlit/streamlit/pull/8155](https://togithub.com/streamlit/streamlit/pull/8155)
- Media elements improvements by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/8203](https://togithub.com/streamlit/streamlit/pull/8203)
- Page switching in AppTest by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8280](https://togithub.com/streamlit/streamlit/pull/8280)
- Add ability to use timedelta and stings to `start_time` and
`end_time`. by [@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/8348](https://togithub.com/streamlit/streamlit/pull/8348)
- st.experimental_fragment decorator by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8343](https://togithub.com/streamlit/streamlit/pull/8343)
- Feature: `st.html` by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/8366](https://togithub.com/streamlit/streamlit/pull/8366)

##### Bug Fixes 🐛

- AppTest format_func by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8189](https://togithub.com/streamlit/streamlit/pull/8189)
- Url decode link column display values if regex is used by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8258](https://togithub.com/streamlit/streamlit/pull/8258)
- Fix infinite loop when `rerun` and triggered widgets are used together
in AppTest by [@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8264](https://togithub.com/streamlit/streamlit/pull/8264)
- Use the button width as minimum for `st.popover` container by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8266](https://togithub.com/streamlit/streamlit/pull/8266)
- Revert "Expire session storage cache on an async timer
([#&#8203;8083](https://togithub.com/streamlit/streamlit/issues/8083))"
by [@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8281](https://togithub.com/streamlit/streamlit/pull/8281)
- Allow custom themes to override embed options query parameter by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8021](https://togithub.com/streamlit/streamlit/pull/8021)
- Fix issue with not correctly waiting for connections by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8294](https://togithub.com/streamlit/streamlit/pull/8294)
- Fix initial iframe height for custom component by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8290](https://togithub.com/streamlit/streamlit/pull/8290)
- Fullscreen Button Overflow Horizontally by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8279](https://togithub.com/streamlit/streamlit/pull/8279)
- Fix white components backgrounds when OS is using dark theme by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8242](https://togithub.com/streamlit/streamlit/pull/8242)
- Add simple fix to update container status after llm complete by
[@&#8203;KedoKudo](https://togithub.com/KedoKudo) in
[https://github.com/streamlit/streamlit/pull/8311](https://togithub.com/streamlit/streamlit/pull/8311)
- Simplify toast message truncation to use character limit directly by
[@&#8203;snehankekre](https://togithub.com/snehankekre) in
[https://github.com/streamlit/streamlit/pull/8337](https://togithub.com/streamlit/streamlit/pull/8337)
- resolve path when registering watcher for module paths by
[@&#8203;zyxue](https://togithub.com/zyxue) in
[https://github.com/streamlit/streamlit/pull/8372](https://togithub.com/streamlit/streamlit/pull/8372)
- Readd mistakenly removed line and add explanatory comment by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8392](https://togithub.com/streamlit/streamlit/pull/8392)

##### Other Changes

- Allow packaging 24.x by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8338](https://togithub.com/streamlit/streamlit/pull/8338)

#### New Contributors

- [@&#8203;filiptammergard](https://togithub.com/filiptammergard) made
their first contribution in
[https://github.com/streamlit/streamlit/pull/8155](https://togithub.com/streamlit/streamlit/pull/8155)
- [@&#8203;KedoKudo](https://togithub.com/KedoKudo) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8311](https://togithub.com/streamlit/streamlit/pull/8311)
- [@&#8203;zyxue](https://togithub.com/zyxue) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8372](https://togithub.com/streamlit/streamlit/pull/8372)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.32.2...1.33.0

###
[`v1.32.2`](https://togithub.com/streamlit/streamlit/releases/tag/1.32.2)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.32.1...1.32.2)

<!-- Release notes generated using configuration in .github/release.yml
at 1.32.2 -->

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.32.1...1.32.2

###
[`v1.32.1`](https://togithub.com/streamlit/streamlit/releases/tag/1.32.1)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.32.0...1.32.1)

<!-- Release notes generated using configuration in .github/release.yml
at 1.32.1 -->

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.32.0...1.32.1

###
[`v1.32.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.32.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.31.1...1.32.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.32.0 -->

#### What's Changed

##### New Features 🎉

- Support markdown links in`st.radio` options by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8028](https://togithub.com/streamlit/streamlit/pull/8028)
- Improve error handling in `st.write_stream` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8036](https://togithub.com/streamlit/streamlit/pull/8036)
- Add support for PIL images in `st.write` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8039](https://togithub.com/streamlit/streamlit/pull/8039)
- add: Supprt for HTTP <Head> method to /healthz endpoint by
[@&#8203;rahulmistri1997](https://togithub.com/rahulmistri1997) in
[https://github.com/streamlit/streamlit/pull/8145](https://togithub.com/streamlit/streamlit/pull/8145)
- Add support for AzureOpenAI chat stream by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8107](https://togithub.com/streamlit/streamlit/pull/8107)
- Add `st.popover` layout container by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7908](https://togithub.com/streamlit/streamlit/pull/7908)
- AppTest `from_function` args by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8183](https://togithub.com/streamlit/streamlit/pull/8183)
- Subtitles changes for `st.video` by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/8057](https://togithub.com/streamlit/streamlit/pull/8057)
- Expander and Status AppTest wrappers by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8187](https://togithub.com/streamlit/streamlit/pull/8187)

##### Bug Fixes 🐛

- Add support for converting `st.query_params` to string by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8030](https://togithub.com/streamlit/streamlit/pull/8030)
- Fix custom dataframe scrollbars in Chrome by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8034](https://togithub.com/streamlit/streamlit/pull/8034)
- Fix `time_input` menu colors in dark mode by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8056](https://togithub.com/streamlit/streamlit/pull/8056)
- Make shallow copies of options returned from ensure_indexable by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8064](https://togithub.com/streamlit/streamlit/pull/8064)
- Fix memory leak in runtime coroutine loop by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8068](https://togithub.com/streamlit/streamlit/pull/8068)
- Prevent pandas keyerror when checking color column format in st.map by
[@&#8203;awhazell](https://togithub.com/awhazell) in
[https://github.com/streamlit/streamlit/pull/8079](https://togithub.com/streamlit/streamlit/pull/8079)
- Fix
[#&#8203;7954](https://togithub.com/streamlit/streamlit/issues/7954) by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/8054](https://togithub.com/streamlit/streamlit/pull/8054)
- Fix issue using a local path with `st.image` on windows. by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8092](https://togithub.com/streamlit/streamlit/pull/8092)
- Fix: `st.page_link` & `st.switch_page` handling / prefixed paths by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/8085](https://togithub.com/streamlit/streamlit/pull/8085)
- Fix script runner stack overflow by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8100](https://togithub.com/streamlit/streamlit/pull/8100)
- Normalize main script path in `st.switch_page` and `st.page_link` by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/8103](https://togithub.com/streamlit/streamlit/pull/8103)
- Fix: `st.page_link` URL preview shows file path by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/8086](https://togithub.com/streamlit/streamlit/pull/8086)
- Support multiple path characteristics for switch_page and page_link by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8127](https://togithub.com/streamlit/streamlit/pull/8127)
- Fix chart exception where color-handling code expected DF index to
start at 0 by
[@&#8203;sfc-gh-tteixeira](https://togithub.com/sfc-gh-tteixeira) in
[https://github.com/streamlit/streamlit/pull/8158](https://togithub.com/streamlit/streamlit/pull/8158)
- Fix: Alert element overflow by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/8194](https://togithub.com/streamlit/streamlit/pull/8194)
- Fully clear App State on page change by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8208](https://togithub.com/streamlit/streamlit/pull/8208)
- Make st.help more resilient with conditional members by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/8228](https://togithub.com/streamlit/streamlit/pull/8228)

##### Other Changes

- Expire session storage cache on an async timer by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/8083](https://togithub.com/streamlit/streamlit/pull/8083)
- Lazy-load emoji module to improve performance by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8109](https://togithub.com/streamlit/streamlit/pull/8109)
- Lazy-load pandas and pyarrow to improve performance by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8125](https://togithub.com/streamlit/streamlit/pull/8125)
- Miscellaneous docstring edits and argument names by
[@&#8203;sfc-gh-dmatthews](https://togithub.com/sfc-gh-dmatthews) in
[https://github.com/streamlit/streamlit/pull/8118](https://togithub.com/streamlit/streamlit/pull/8118)
- Deprecate the `deprecation.showPyplotGlobalUse` config option by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8133](https://togithub.com/streamlit/streamlit/pull/8133)
- Use env variable to configure matplotlib backend by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8113](https://togithub.com/streamlit/streamlit/pull/8113)
- Lazy-load numpy and pillow to improve performance by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8134](https://togithub.com/streamlit/streamlit/pull/8134)
- Show a warning when server port `3000` is used by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8152](https://togithub.com/streamlit/streamlit/pull/8152)
- Fixed typos in example documentation by
[@&#8203;t1emp0](https://togithub.com/t1emp0) in
[https://github.com/streamlit/streamlit/pull/8162](https://togithub.com/streamlit/streamlit/pull/8162)
- Increase time until timeout warning is shown for a custom component by
[@&#8203;raethlein](https://togithub.com/raethlein) in
[https://github.com/streamlit/streamlit/pull/8179](https://togithub.com/streamlit/streamlit/pull/8179)
- Update glide-data-grid to version 6.0.4 by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7779](https://togithub.com/streamlit/streamlit/pull/7779)

#### New Contributors

- [@&#8203;awhazell](https://togithub.com/awhazell) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8079](https://togithub.com/streamlit/streamlit/pull/8079)
- [@&#8203;SidVer312](https://togithub.com/SidVer312) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8017](https://togithub.com/streamlit/streamlit/pull/8017)
- [@&#8203;rahulmistri1997](https://togithub.com/rahulmistri1997) made
their first contribution in
[https://github.com/streamlit/streamlit/pull/8145](https://togithub.com/streamlit/streamlit/pull/8145)
- [@&#8203;t1emp0](https://togithub.com/t1emp0) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/8162](https://togithub.com/streamlit/streamlit/pull/8162)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.31.1...1.32.0

###
[`v1.31.1`](https://togithub.com/streamlit/streamlit/releases/tag/1.31.1)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.31.0...1.31.1)

<!-- Release notes generated using configuration in .github/release.yml
at 1.31.1 -->

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.31.0...1.31.1

###
[`v1.31.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.31.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.30.0...1.31.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.31.0 -->

#### What's Changed

##### New Features 🎉

- Allow inline usage of `st.chat_input` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7896](https://togithub.com/streamlit/streamlit/pull/7896)
- Feature: `st.page_link` by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7965](https://togithub.com/streamlit/streamlit/pull/7965)
- Add `st.write_stream` command to handle generators or OpenAI output by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7906](https://togithub.com/streamlit/streamlit/pull/7906)

##### Bug Fixes 🐛

- Reuse style element for theme injection into custom components by
[@&#8203;Tom-Julux](https://togithub.com/Tom-Julux) in
[https://github.com/streamlit/streamlit/pull/7914](https://togithub.com/streamlit/streamlit/pull/7914)
- Handle out of order blocks when parsing element tree by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7923](https://togithub.com/streamlit/streamlit/pull/7923)
- Fix progress bar float input bug by
[@&#8203;notiona](https://togithub.com/notiona) in
[https://github.com/streamlit/streamlit/pull/7953](https://togithub.com/streamlit/streamlit/pull/7953)
- Don't pass query parameters from parent page into iframes by
[@&#8203;eric-skydio](https://togithub.com/eric-skydio) in
[https://github.com/streamlit/streamlit/pull/7951](https://togithub.com/streamlit/streamlit/pull/7951)
- Fix period type support for Pandas 2.2.0 by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7988](https://togithub.com/streamlit/streamlit/pull/7988)
- Only ignore hiding required columns in dynamic mode by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7996](https://togithub.com/streamlit/streamlit/pull/7996)
- Disable watchdog suggestion for `none` or `poll` watcher type by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/8024](https://togithub.com/streamlit/streamlit/pull/8024)

##### Other Changes

- Support latest importlib-metadata v7 by
[@&#8203;elgalu](https://togithub.com/elgalu) in
[https://github.com/streamlit/streamlit/pull/7925](https://togithub.com/streamlit/streamlit/pull/7925)
- Make Snowpark dependency truly optional for SnowflakeConnection by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7919](https://togithub.com/streamlit/streamlit/pull/7919)

#### New Contributors

- [@&#8203;Tom-Julux](https://togithub.com/Tom-Julux) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7914](https://togithub.com/streamlit/streamlit/pull/7914)
- [@&#8203;elgalu](https://togithub.com/elgalu) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7925](https://togithub.com/streamlit/streamlit/pull/7925)
- [@&#8203;notiona](https://togithub.com/notiona) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7953](https://togithub.com/streamlit/streamlit/pull/7953)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.30.0...1.31.0

###
[`v1.30.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.30.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.29.0...1.30.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.30.0 -->

#### What's Changed

##### New Features 🎉

- Add support for scroll container via the `height` parameter by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7697](https://togithub.com/streamlit/streamlit/pull/7697)
- Add display_text to LinkColumn by
[@&#8203;sfc-gh-bhay](https://togithub.com/sfc-gh-bhay) in
[https://github.com/streamlit/streamlit/pull/7741](https://togithub.com/streamlit/streamlit/pull/7741)
- st.query_params by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7774](https://togithub.com/streamlit/streamlit/pull/7774)
- Add Pandas styler support to `LinkColumn` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7784](https://togithub.com/streamlit/streamlit/pull/7784)
- Config - MPA Sidebar Page Navigation by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7852](https://togithub.com/streamlit/streamlit/pull/7852)
- Feature - `st.switch_page` by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7853](https://togithub.com/streamlit/streamlit/pull/7853)

##### Bug Fixes 🐛

- Fix handling of ordinal columns for builtin-charts by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7771](https://togithub.com/streamlit/streamlit/pull/7771)
- Fix `st.toggle` background color by
[@&#8203;sfc-gh-jgarcia](https://togithub.com/sfc-gh-jgarcia) in
[https://github.com/streamlit/streamlit/pull/7788](https://togithub.com/streamlit/streamlit/pull/7788)
- Don't send command used to start streamlit to frontend by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7787](https://togithub.com/streamlit/streamlit/pull/7787)
- Fix iframe background for dark color scheme by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7821](https://togithub.com/streamlit/streamlit/pull/7821)
- Prevent incompatible column config serialization by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7887](https://togithub.com/streamlit/streamlit/pull/7887)
- Prevent hiding required editable columns by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7888](https://togithub.com/streamlit/streamlit/pull/7888)
- Disable the ability to submit form if a submit button is disabled by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7827](https://togithub.com/streamlit/streamlit/pull/7827)
- Fix flickering effect when changing tabs by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7904](https://togithub.com/streamlit/streamlit/pull/7904)
- Fix shrunk icon size in st.expander by
[@&#8203;matiboux](https://togithub.com/matiboux) in
[https://github.com/streamlit/streamlit/pull/7596](https://togithub.com/streamlit/streamlit/pull/7596)
- Add check that individual elements are "python comparable" by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/7840](https://togithub.com/streamlit/streamlit/pull/7840)
- Use commonpath rather than common prefix for more secure access by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/7901](https://togithub.com/streamlit/streamlit/pull/7901)
- Don't disable tab on stale flag by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7905](https://togithub.com/streamlit/streamlit/pull/7905)
- Fix embed params being dropped in page swaps by
[@&#8203;sfc-gh-wihuang](https://togithub.com/sfc-gh-wihuang) in
[https://github.com/streamlit/streamlit/pull/7918](https://togithub.com/streamlit/streamlit/pull/7918)

##### Other Changes

- Fix parenthesis error messaging by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7770](https://togithub.com/streamlit/streamlit/pull/7770)
- Update SECURITY.md by
[@&#8203;sfc-gh-hpathak](https://togithub.com/sfc-gh-hpathak) in
[https://github.com/streamlit/streamlit/pull/7783](https://togithub.com/streamlit/streamlit/pull/7783)
- Speed up plotly figures by 8x for users with "orjson" by
[@&#8203;eric-skydio](https://togithub.com/eric-skydio) in
[https://github.com/streamlit/streamlit/pull/7860](https://togithub.com/streamlit/streamlit/pull/7860)

#### New Contributors

- [@&#8203;sfc-gh-bhay](https://togithub.com/sfc-gh-bhay) made their
first contribution in
[https://github.com/streamlit/streamlit/pull/7741](https://togithub.com/streamlit/streamlit/pull/7741)
- [@&#8203;sfc-gh-jkinkead](https://togithub.com/sfc-gh-jkinkead) made
their first contribution in
[https://github.com/streamlit/streamlit/pull/7843](https://togithub.com/streamlit/streamlit/pull/7843)
- [@&#8203;sfc-gh-jdaly](https://togithub.com/sfc-gh-jdaly) made their
first contribution in
[https://github.com/streamlit/streamlit/pull/7842](https://togithub.com/streamlit/streamlit/pull/7842)
- [@&#8203;matiboux](https://togithub.com/matiboux) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7596](https://togithub.com/streamlit/streamlit/pull/7596)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.29.0...1.30.0

###
[`v1.29.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.29.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.28.2...1.29.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.29.0 -->

#### What's Changed

##### Breaking Changes 🛠

- Remove old app test api by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7657](https://togithub.com/streamlit/streamlit/pull/7657)

##### New Features 🎉

- Add ability to add empty query params by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7601](https://togithub.com/streamlit/streamlit/pull/7601)
- Add Enum coercion to options elements, if input Enum classes
"identical" but redefined on script run by
[@&#8203;Asaurus1](https://togithub.com/Asaurus1) in
[https://github.com/streamlit/streamlit/pull/7408](https://togithub.com/streamlit/streamlit/pull/7408)
- Remove Recording Feature Menu Item when unsupported by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/7604](https://togithub.com/streamlit/streamlit/pull/7604)
- Improved AppTest/ElementTree formatting by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7658](https://togithub.com/streamlit/streamlit/pull/7658)
- Add support for timedelta type to `st.dataframe`, `st.data_editor` and
`st.table`. by [@&#8203;LukasMasuch](https://togithub.com/LukasMasuch)
in
[https://github.com/streamlit/streamlit/pull/7689](https://togithub.com/streamlit/streamlit/pull/7689)
- Add border parameter to container and form by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7455](https://togithub.com/streamlit/streamlit/pull/7455)
- Use "loading skeletons" throughout Streamlit by
[@&#8203;sfc-gh-tteixeira](https://togithub.com/sfc-gh-tteixeira) in
[https://github.com/streamlit/streamlit/pull/7598](https://togithub.com/streamlit/streamlit/pull/7598)

##### Bug Fixes 🐛

- Make the outline for expanders appear on focus-visible and not focus
by [@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/7592](https://togithub.com/streamlit/streamlit/pull/7592)
- Use `NoReturn` annotation for stop and rerun by
[@&#8203;kongzii](https://togithub.com/kongzii) in
[https://github.com/streamlit/streamlit/pull/7422](https://togithub.com/streamlit/streamlit/pull/7422)
- Fix SVG scaling on fullscreen mode for `st.graphviz_chart` by
[@&#8203;snehankekre](https://togithub.com/snehankekre) in
[https://github.com/streamlit/streamlit/pull/7398](https://togithub.com/streamlit/streamlit/pull/7398)
- Fix top padding when embedding an app with a sidebar by
[@&#8203;sfc-gh-jgarcia](https://togithub.com/sfc-gh-jgarcia) in
[https://github.com/streamlit/streamlit/pull/7630](https://togithub.com/streamlit/streamlit/pull/7630)
- Fix app testing repr bug for `st.container` by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7644](https://togithub.com/streamlit/streamlit/pull/7644)
- Ensure file_uploader doesn't trigger needless reruns by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7641](https://togithub.com/streamlit/streamlit/pull/7641)
- Fix trigger value regression with `st.rerun` by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7643](https://togithub.com/streamlit/streamlit/pull/7643)
- Fix: MPA Nav expand arrow by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7634](https://togithub.com/streamlit/streamlit/pull/7634)
- Greatly narrow errors that we retry in SnowflakeConnection by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7645](https://togithub.com/streamlit/streamlit/pull/7645)
- Fix how connection is declared for typing purposes by
[@&#8203;thezanke](https://togithub.com/thezanke) in
[https://github.com/streamlit/streamlit/pull/7671](https://togithub.com/streamlit/streamlit/pull/7671)
- Enforce pyarrow version for arrow-based custom components by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7695](https://togithub.com/streamlit/streamlit/pull/7695)
- Allow to access external server IP via https. by
[@&#8203;LarsHill](https://togithub.com/LarsHill) in
[https://github.com/streamlit/streamlit/pull/7712](https://togithub.com/streamlit/streamlit/pull/7712)
- Move dg_stack into a ContextVar to support with blocks in separate
threads by [@&#8203;eric-skydio](https://togithub.com/eric-skydio) in
[https://github.com/streamlit/streamlit/pull/7715](https://togithub.com/streamlit/streamlit/pull/7715)
- Improve st.connection caching behavior by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/7730](https://togithub.com/streamlit/streamlit/pull/7730)
- Don't use hash on floats in hashing.py by
[@&#8203;BlackHC](https://togithub.com/BlackHC) in
[https://github.com/streamlit/streamlit/pull/7754](https://togithub.com/streamlit/streamlit/pull/7754)

##### Other Changes

- Deprecate unused config options by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7584](https://togithub.com/streamlit/streamlit/pull/7584)
- Remove "Made by Streamlit" footer by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7583](https://togithub.com/streamlit/streamlit/pull/7583)
- Tweak "forgot config" SnowflakeConnection error message by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7652](https://togithub.com/streamlit/streamlit/pull/7652)
- Release Streamlit version 1.28.1 by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7666](https://togithub.com/streamlit/streamlit/pull/7666)
- Poll for script completion much more often in AppTest by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7691](https://togithub.com/streamlit/streamlit/pull/7691)
- Add Python 3.12 support by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/7663](https://togithub.com/streamlit/streamlit/pull/7663)
- Release Streamlit version 1.28.2 by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7716](https://togithub.com/streamlit/streamlit/pull/7716)
- fix: component dev url typo by
[@&#8203;ObservedObserver](https://togithub.com/ObservedObserver) in
[https://github.com/streamlit/streamlit/pull/7746](https://togithub.com/streamlit/streamlit/pull/7746)
- Fix another url typo by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7764](https://togithub.com/streamlit/streamlit/pull/7764)

#### New Contributors

- [@&#8203;kongzii](https://togithub.com/kongzii) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7422](https://togithub.com/streamlit/streamlit/pull/7422)
- [@&#8203;Asaurus1](https://togithub.com/Asaurus1) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7408](https://togithub.com/streamlit/streamlit/pull/7408)
- [@&#8203;thezanke](https://togithub.com/thezanke) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7671](https://togithub.com/streamlit/streamlit/pull/7671)
- [@&#8203;LarsHill](https://togithub.com/LarsHill) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7712](https://togithub.com/streamlit/streamlit/pull/7712)
- [@&#8203;eric-skydio](https://togithub.com/eric-skydio) made their
first contribution in
[https://github.com/streamlit/streamlit/pull/7715](https://togithub.com/streamlit/streamlit/pull/7715)
- [@&#8203;sfc-gh-pfinnigan](https://togithub.com/sfc-gh-pfinnigan) made
their first contribution in
[https://github.com/streamlit/streamlit/pull/7682](https://togithub.com/streamlit/streamlit/pull/7682)
- [@&#8203;samueldg](https://togithub.com/samueldg) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7762](https://togithub.com/streamlit/streamlit/pull/7762)
- [@&#8203;ObservedObserver](https://togithub.com/ObservedObserver) made
their first contribution in
[https://github.com/streamlit/streamlit/pull/7746](https://togithub.com/streamlit/streamlit/pull/7746)
- [@&#8203;BlackHC](https://togithub.com/BlackHC) made their first
contribution in
[https://github.com/streamlit/streamlit/pull/7754](https://togithub.com/streamlit/streamlit/pull/7754)

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.28.2...1.29.0

###
[`v1.28.2`](https://togithub.com/streamlit/streamlit/releases/tag/1.28.2)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.28.1...1.28.2)

<!-- Release notes generated using configuration in .github/release.yml
at 1.28.2 -->

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.28.1...1.28.2

###
[`v1.28.1`](https://togithub.com/streamlit/streamlit/releases/tag/1.28.1)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.28.0...1.28.1)

<!-- Release notes generated using configuration in .github/release.yml
at 1.28.1 -->

**Full Changelog**:
https://github.com/streamlit/streamlit/compare/1.28.0...1.28.1

###
[`v1.28.0`](https://togithub.com/streamlit/streamlit/releases/tag/1.28.0)

[Compare
Source](https://togithub.com/streamlit/streamlit/compare/1.27.2...1.28.0)

<!-- Release notes generated using configuration in .github/release.yml
at 1.28.0 -->

#### What's Changed

##### Breaking Changes 🛠

- Remove legacy dataframe serialization by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7429](https://togithub.com/streamlit/streamlit/pull/7429)

##### New Features 🎉

- Add overrideable default timeout for script tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7327](https://togithub.com/streamlit/streamlit/pull/7327)
- Fluent asserts and type narrowing for widgets in tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7325](https://togithub.com/streamlit/streamlit/pull/7325)
- Teach st.write how to not set unsafe_allow_html when possible by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7432](https://togithub.com/streamlit/streamlit/pull/7432)
- Add datetime index editing support for `st.data_editor` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7483](https://togithub.com/streamlit/streamlit/pull/7483)
- Support Graphviz layout engines by
[@&#8203;snehankekre](https://togithub.com/snehankekre) in
[https://github.com/streamlit/streamlit/pull/7505](https://togithub.com/streamlit/streamlit/pull/7505)
- Better input/output visibility in Langchain callback by
[@&#8203;pokidyshev](https://togithub.com/pokidyshev) in
[https://github.com/streamlit/streamlit/pull/7478](https://togithub.com/streamlit/streamlit/pull/7478)
- New test framework api structure by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7413](https://togithub.com/streamlit/streamlit/pull/7413)
- Arrow dataframe test wrapper by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7519](https://togithub.com/streamlit/streamlit/pull/7519)
- Columns and tabs in script testing by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7524](https://togithub.com/streamlit/streamlit/pull/7524)
- Chat input and messages for app testing by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7535](https://togithub.com/streamlit/streamlit/pull/7535)
- Update `st.spinner` by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7488](https://togithub.com/streamlit/streamlit/pull/7488)
- Alert classes in app testing by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7542](https://togithub.com/streamlit/streamlit/pull/7542)
- Query params and secrets in app tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7561](https://togithub.com/streamlit/streamlit/pull/7561)
- De-experimentalize st.connection by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7536](https://togithub.com/streamlit/streamlit/pull/7536)
- Minor st.connection tweaks by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7562](https://togithub.com/streamlit/streamlit/pull/7562)
- Basic app test repr cleanup by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7573](https://togithub.com/streamlit/streamlit/pull/7573)
- Add toolbar to `st.dataframe` and `st.data_editor` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7345](https://togithub.com/streamlit/streamlit/pull/7345)
- Implement many remaining AppTest elements by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7576](https://togithub.com/streamlit/streamlit/pull/7576)

##### Bug Fixes 🐛

- Remove autosizer so we don't have weird flickering and weird layout
issues by [@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7281](https://togithub.com/streamlit/streamlit/pull/7281)
- Better dataframe hashing by
[@&#8203;kajarenc](https://togithub.com/kajarenc) in
[https://github.com/streamlit/streamlit/pull/7331](https://togithub.com/streamlit/streamlit/pull/7331)
- Fix bokeh slider by adding in side effects to package json by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7441](https://togithub.com/streamlit/streamlit/pull/7441)
- Fix vertical button regression in toolbar actions by
[@&#8203;willhuang1997](https://togithub.com/willhuang1997) in
[https://github.com/streamlit/streamlit/pull/7470](https://togithub.com/streamlit/streamlit/pull/7470)
- Upgrade plotly.js version by
[@&#8203;sfc-gh-wihuang](https://togithub.com/sfc-gh-wihuang) in
[https://github.com/streamlit/streamlit/pull/7449](https://togithub.com/streamlit/streamlit/pull/7449)
- Avoid confusion about file extensions: keep inner dots by
[@&#8203;mo42](https://togithub.com/mo42) in
[https://github.com/streamlit/streamlit/pull/7362](https://togithub.com/streamlit/streamlit/pull/7362)
- Configure non-range indices as required for editing with
`st.data_editor` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7481](https://togithub.com/streamlit/streamlit/pull/7481)
- Widget style fixes by
[@&#8203;sfc-gh-jgarcia](https://togithub.com/sfc-gh-jgarcia) in
[https://github.com/streamlit/streamlit/pull/7486](https://togithub.com/streamlit/streamlit/pull/7486)
- Support for non-string column names in `st.data_editor` by
[@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7485](https://togithub.com/streamlit/streamlit/pull/7485)
- Add user-friendly exception if dataframe exceeds max config of Pandas
Styler by [@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7497](https://togithub.com/streamlit/streamlit/pull/7497)
- Only use get_active_session when running in SiS by
[@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7502](https://togithub.com/streamlit/streamlit/pull/7502)
- Call matplotlib crash fix for scripts run in tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7511](https://togithub.com/streamlit/streamlit/pull/7511)
- Improve decimal type support for `st.dataframe` and `st.data_editor`
by [@&#8203;LukasMasuch](https://togithub.com/LukasMasuch) in
[https://github.com/streamlit/streamlit/pull/7475](https://togithub.com/streamlit/streamlit/pull/7475)
- Fix: Foreign language anchors by
[@&#8203;mayagbarnes](https://togithub.com/mayagbarnes) in
[https://github.com/streamlit/streamlit/pull/7454](https://togithub.com/streamlit/streamlit/pull/7454)
- Fix Chat Message container to align and manage the autosizer handling
by [@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/7504](https://togithub.com/streamlit/streamlit/pull/7504)
- Added permission to use Clipboard API in IFrame by
[@&#8203;dilipthakkar](https://togithub.com/dilipthakkar) in
[https://github.com/streamlit/streamlit/pull/7487](https://togithub.com/streamlit/streamlit/pull/7487)
- Move label attribute to only widgets that have it by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7560](https://togithub.com/streamlit/streamlit/pull/7560)
- Fix select slider value setting with non-strings by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7566](https://togithub.com/streamlit/streamlit/pull/7566)
- Fix attr access of session state in app tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7543](https://togithub.com/streamlit/streamlit/pull/7543)
- Added FIPS compliance by
[@&#8203;DueViktor](https://togithub.com/DueViktor) in
[https://github.com/streamlit/streamlit/pull/7527](https://togithub.com/streamlit/streamlit/pull/7527)
- Enlarge sidebar left and right padding to match MPA spacing by
[@&#8203;sfc-gh-jgarcia](https://togithub.com/sfc-gh-jgarcia) in
[https://github.com/streamlit/streamlit/pull/7531](https://togithub.com/streamlit/streamlit/pull/7531)
- Convert Expander to Details/Summary Element by
[@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https://github.com/streamlit/streamlit/pull/7247](https://togithub.com/streamlit/streamlit/pull/7247)
- Fix chat_input repr and add repr tests by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7574](https://togithub.com/streamlit/streamlit/pull/7574)

##### Other Changes

- Release 1.27.0 by [@&#8203;vdonato](https://togithub.com/vdonato) in
[https://github.com/streamlit/streamlit/pull/7402](https://togithub.com/streamlit/streamlit/pull/7402)
- Allow pillow 10.0.1 by
[@&#8203;AnOctopus](https://togithub.com/AnOctopus) in
[https://github.com/streamlit/streamlit/pull/7442](https://togithub.com/streamlit/streamlit/pull/7442)
- Release 1.27.1 by [@&#8203;kmcgrady](https://togithub.com/kmcgrady) in
[https:/

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 4am on the first day of the
month" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/sawyerh/highlights).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNzcuOCIsInVwZGF0ZWRJblZlciI6IjM3LjM3Ny44IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Create parameter 'end_time' for st.video Loop option for video
3 participants